import 'package:bluetooth_protocols_plugin/src/tools/extension_enum.dart';

/*
  Uint8 当前状态
  0 空闲
  1 就绪（等待固件升级）
  2 忙碌 1（正在进行固件文件下
  载或者固件文件搬运）
  3 忙碌 2（新固件启用中）(该状
  态非必须存在)
*/

// 固件升级类型
enum FirmwareUpgradeStatus {
  idle(0),
  ready(1),
  busy1(2),
  busy2(3),
  unknown(255);

  final int rawValue;
  const FirmwareUpgradeStatus(this.rawValue);

  // 通过 rawValue 获取枚举类型
  static FirmwareUpgradeStatus? getTypeByNum(int rawValue) =>
      FirmwareUpgradeStatus.values
          .firstWhereOrNull((activity) => activity.rawValue == rawValue);
}

/*
  Uint8 强制级别，范围 0~15
  0 无强制升级
  1 提示用户升级，但仍然可以正
  常使用
  2~14 限制功能使用，具体方式
  自定义
  15 升级完成前禁止使用
*/

// 强制固件升级类型
enum FirmwareForceUpgradeStatus {
  none(0),
  prompt(1),
  custom(2),
  limited(15),
  unknown(255);

  final int rawValue;
  const FirmwareForceUpgradeStatus(this.rawValue);

  String get name {
    switch (this) {
      case FirmwareForceUpgradeStatus.none:
        return "无强制升级";
      case FirmwareForceUpgradeStatus.prompt:
        return "提示用户升级，但仍然可以正常使用";
      case FirmwareForceUpgradeStatus.custom:
        return "限制功能使用，具体方式自定义";
      case FirmwareForceUpgradeStatus.limited:
        return "升级完成前禁止使用";
      case FirmwareForceUpgradeStatus.unknown:
        return "未知状态";
    }
  }

  // 通过 rawValue 获取枚举类型
  static FirmwareForceUpgradeStatus? getTypeByNum(int rawValue) =>
      FirmwareForceUpgradeStatus.values
          .firstWhereOrNull((activity) => activity.rawValue == rawValue);
}
